package sgpt.Beans.DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import sgpt.Beans.Etapa;
import sgpt.Beans.Plano;
import sgpt.Beans.DAO.interfaces.IetapaDAO;

public class EtapaDAO implements IetapaDAO {
	
	private Statement db;
	
	public EtapaDAO(Connection conn) {
		super();
		try {
			this.db = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("************ Erro no construtor de "+this.getClass().getSimpleName());
			System.out.println(e.getMessage());
		}
	}

	public List<Etapa> getEtapas(Plano plano) throws SQLException {
		return getEtapas(plano.getID());
	}

	public List<Etapa> getEtapas(long planoid) throws SQLException {
		String sql = "select * FROM etapas WHERE plano_id = "+planoid;
		List<Etapa> etapas = new ArrayList<Etapa>();
		Etapa etapa;
		ResultSet rs = db.executeQuery(sql);
		while (rs.next()){
			etapa = new Etapa();
			etapa.setCidade_id(rs.getInt(ConstantesDAO.cidade_id));
			etapa.setTransporte_id(rs.getInt(ConstantesDAO.transporte_id));
			etapa.setTranslado_id(rs.getInt(ConstantesDAO.translado_id));
			etapa.setHospedagem_id(rs.getInt(ConstantesDAO.hospedagem_id));
			etapas.add(etapa);
		}
		return etapas;
	}

	public void insereEtapas(Plano plano) throws SQLException {
		String sqlInsert = "INSERT INTO etapas VALUES(NULL,";
		Plano.PlanoIterator iterator = plano.CreateIterator();
		while (iterator.isDone()){
			Etapa etapa = iterator.next();
			String sql = sqlInsert + "," + plano.getID();
			sql = sql + "," + etapa.getCidade_id();
			sql = sql + "," + etapa.getTransporte_id();
			sql = sql + "," + etapa.getTranslado_id();
			sql = sql + "," + etapa.getHospedagem_id() +")";
			db.executeUpdate(sql);
		}
	}

	public void removeEtapa(Plano plano) {
		// TODO Auto-generated method stub

	}

	public void updateEtapa(Plano plano) {
		// TODO Auto-generated method stub

	}

}
